﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using Ecommerce.Model;

namespace Ecommerce.Admin.Controles
{
    public partial class ImagensProduto : System.Web.UI.UserControl
    {

        public int IdPro { get; set; }
        public bool Editar { get; set; }
                
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Request.QueryString["IdPro"] != null)
                {
                    IdPro = Convert.ToInt32(Request.QueryString["IdPro"]);
                    Editar = true;
                    ListarImagens();
                }
                else
                {
                    Editar = false;
                }
            }
        }

        private void ListarImagens()
        {
            ProdutoModel model = new ProdutoModel();
            var imagens = model.ListarImagem(IdPro);

            grvImagens.DataSource = imagens;
            grvImagens.DataBind();
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {

            if (FileUpload1.HasFile)
            {
                IdPro = Convert.ToInt32(Request.QueryString["IdPro"]);
                string caminhoRaiz = Server.MapPath("").Substring(0, Server.MapPath("").LastIndexOf("Paginas"));
                string nomeArquivo = Path.GetFileName(FileUpload1.PostedFile.FileName);
                string destinoArquivo = caminhoRaiz + @"ImagemProdutos\" + IdPro.ToString();
                string caminhoCompleto = destinoArquivo + @"\" + nomeArquivo;
                string caminhoVirtual = @"~\ImagemProdutos\" + IdPro.ToString() + @"\" + nomeArquivo;

                if (Directory.Exists(destinoArquivo) == false)
                    Directory.CreateDirectory(destinoArquivo);

                FileUpload1.SaveAs(caminhoCompleto);

                //Persisto os dados no BD
                tb_ipr_imagem_produto imagem = new tb_ipr_imagem_produto();
                imagem.pro_idt_produto = IdPro;
                imagem.ipr_des_imagem = "Teste";
                imagem.ipr_des_caminho_imagem = caminhoCompleto;
                imagem.ipr_des_caminho_virtual = caminhoVirtual;
                imagem.ipr_num_ordem_imagem = Convert.ToInt32(txtOrdemApresentacao.Text);
                imagem.ipr_dat_criacao = DateTime.Now;

                ProdutoModel model = new ProdutoModel();
                model.InserirImagem(imagem);

                ListarImagens();
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Selecione um arquivo!')", true);
            }
         }

        protected void grvImagens_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var imagem = (tb_ipr_imagem_produto)e.Row.DataItem;

                Image imgProduto = (Image)e.Row.FindControl("imgProduto");
                imgProduto.ImageUrl = imagem.ipr_des_caminho_virtual;

                e.Row.Cells[1].Text = imagem.ipr_des_imagem;
                e.Row.Cells[2].Text = imagem.ipr_num_ordem_imagem.ToString();

                LinkButton lkbExcluir = (LinkButton)e.Row.FindControl("lkbExcluir");
                lkbExcluir.Text = "Excluir";
                lkbExcluir.CommandName = "Excluir";
                lkbExcluir.CommandArgument = imagem.ipr_idt_imagem_produto.ToString();
            }
        }

        protected void grvImagens_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("Excluir"))
            {
                ExcluirImagem(Convert.ToInt32(e.CommandArgument));
                ListarImagens();
            }
        }

        private void ExcluirImagem(int identificadorImagem)
        {
            ProdutoModel model = new ProdutoModel();
            model.ExcluirImagem(identificadorImagem);
        }
    }
}